{
 "cells": [
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Evaluation of GPT-2 models with FHE-compliant operators \n",
    "\n",
    "This notebook presents a first approach of how to execute a GPT model in FHE, where some specific parts of the model are converted to FHE computations.\n",
    "The following considers the GPT-2 model with the language modeling head on top, with the following configuration: 12 layers, 12 attention heads, 768 embedding dimensions and a vocabulary size of 50257 words.\n",
    "Additionally, the QGPT-2 models are built around Hugging Face's Transformer library, sharing the same API with only a few additional steps to acknowledge.\n",
    "\n",
    "The performance of two quantized versions of the GPT-2 model:\n",
    "- a model that quantizes a single attention head found in the first layer: SingleHeadQGPT2Model\n",
    "- a model that quantizes a complete multi-head attention pass found in the first layer: MultiHeadsQGPT2Model\n",
    "\n",
    "The quantized operators from these models are FHE-compliant, meaning that these specific part can be executed in FHE, while the rest of the model are done in float in the clear.\n",
    "This notebook explains how to load these models from the Hugging Face's associated pre-trained ones, calibrate them, compile their FHE circuit and then execute their inference with some FHE.\n",
    "Finally, different top-k accuracies on the next token predicted from a base text for both models with respect to the number of bits of quantization used are compared. Using these figures, the notebook shows that inputs and weights can be quantized over less than 8 bits to make the inference reach near-floating point performances.\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Imports and loads"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import logging\n",
    "import time\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "import torch\n",
    "from load_huggingface import get_gpt2_model, get_gpt2_tokenizer\n",
    "from qgpt2_models import MultiHeadsQGPT2Model, SingleHeadQGPT2Model\n",
    "\n",
    "# Disable some warnings from Hugging Face when loading the models\n",
    "logging.getLogger(\"transformers.modeling_utils\").setLevel(logging.ERROR)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Load the GPT-2 model (GPT2LMHeadModel) and tokenizer."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "gpt2_model = get_gpt2_model(\"gpt2_model\")\n",
    "gpt2_tokenizer = get_gpt2_tokenizer(\"gpt2_tokenizer\")"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Example with Hugging Face\n",
    "\n",
    "First, a simple example using a short sequence is shown, generating a few tokens with Hugging Face's GPT-2 model."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "input_sentence = \"Computations on encrypted data can help\""
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now encode the sequence using the tokenizer and retrieve the input token ids."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "input_token_indexes = gpt2_tokenizer.encode(input_sentence)\n",
    "input_ids = torch.tensor(input_token_indexes).unsqueeze(0)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Finally, generate 10 new tokens and decode the output sentence. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "The attention mask and the pad token id were not set. As a consequence, you may observe unexpected behavior. Please pass your input's `attention_mask` to obtain reliable results.\n",
      "Setting `pad_token_id` to `eos_token_id`:50256 for open-end generation.\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "'Computations on encrypted data can help protect your privacy.'"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "output_ids = gpt2_model.generate(input_ids, max_new_tokens=4, use_cache=False)\n",
    "gpt2_tokenizer.decode(output_ids[0])"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Single Attention Head Model\n",
    "\n",
    "Here, the model's first attention head of its first layer, as well as its associated first projection, is done using quantized operators. \n",
    "The rest remains the same as in Hugging Face's implementation. Mode details can be found in SingleHeadQGPT2Model's documentation.\n",
    "\n",
    "First, load the model using the pre-trained files. \n",
    "Only 7 bits of quantization is needed in order to recover the same sentence as with the initial floating point model."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "proj_single_head_qgpt2 = SingleHeadQGPT2Model.from_pretrained(\n",
    "    \"gpt2_model\", n_bits=7, use_cache=False\n",
    ")"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Then generate the next 10 tokens in the clear with the quantized operators in order to retrieve the sentence. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "The attention mask and the pad token id were not set. As a consequence, you may observe unexpected behavior. Please pass your input's `attention_mask` to obtain reliable results.\n",
      "Setting `pad_token_id` to `eos_token_id`:50256 for open-end generation.\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "'Computations on encrypted data can help protect your privacy.'"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "proj_single_head_qgpt2.set_fhe_mode(fhe=\"disable\")\n",
    "\n",
    "output_ids_clear = proj_single_head_qgpt2.generate(input_ids, max_new_tokens=4)\n",
    "gpt2_tokenizer.decode(output_ids_clear[0])"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The generated sentence exactly matches the one from Hugging Face original model.\n",
    "\n",
    "The logits for the next predicted token are now generated in the clear."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "proj_single_head_qgpt2.set_fhe_mode(fhe=\"disable\")\n",
    "\n",
    "output_logits_clear = proj_single_head_qgpt2(input_ids).logits"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The model is compiled using the input token ids.\n",
    "Here, the model executes the forward pass in the clear, which computes and stores the necessary quantization parameters.\n",
    "Once this is done, a FHE circuit is built, which then can be used to execute the forward pass with its quantized parts done in FHE."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Circuit compiled with at most 15 bits\n"
     ]
    }
   ],
   "source": [
    "circuit_single_head = proj_single_head_qgpt2.compile(input_ids, msbs_round=6)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The circuit's bit-width reaches 15 bits at most.\n",
    "\n",
    "The model is set in simulation mode in order to retrieve the logits that are expected to be computed with FHE."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "proj_single_head_qgpt2.set_fhe_mode(fhe=\"simulate\")\n",
    "\n",
    "output_logits_simulated = proj_single_head_qgpt2(input_ids).logits"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The single head attention is now ready for execution in FHE."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Time taken to execute the single head in FHE: 166.38 seconds\n"
     ]
    }
   ],
   "source": [
    "proj_single_head_qgpt2.set_fhe_mode(fhe=\"execute\")\n",
    "\n",
    "start = time.time()\n",
    "output_logits_fhe = proj_single_head_qgpt2(input_ids).logits\n",
    "end = time.time()\n",
    "execution_time = end - start\n",
    "\n",
    "print(f\"Time taken to execute the single head in FHE: {execution_time:.2f} seconds\")"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Multi-Head Attention Model\n",
    "\n",
    "Here, the model's multi-head attention found in its first layer is done using quantized operators.\n",
    "The rest remains the same as in Hugging Face's implementation. More details can be found in MultiHeadsQGPT2Model's documentation.\n",
    "\n",
    "The model is loaded using the pre-trained files.\n",
    "In this case, 10 bits of quantization are needed in order to recover almost the same sentence as with the initial floating point model."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "proj_12_heads_qgpt2 = MultiHeadsQGPT2Model.from_pretrained(\"gpt2_model\", n_bits=10, use_cache=False)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Similarly, new tokens are generated in the clear and the output sentence is decoded."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "The attention mask and the pad token id were not set. As a consequence, you may observe unexpected behavior. Please pass your input's `attention_mask` to obtain reliable results.\n",
      "Setting `pad_token_id` to `eos_token_id`:50256 for open-end generation.\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "'Computations on encrypted data can help protect your privacy.'"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "proj_12_heads_qgpt2.set_fhe_mode(fhe=\"disable\")\n",
    "\n",
    "output_ids_clear = proj_12_heads_qgpt2.generate(input_ids, max_new_tokens=4)\n",
    "gpt2_tokenizer.decode(output_ids_clear[0])"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The generated sentence matches the one from Hugging Face's original model. However, in its current form, the MHA part requires less precision to run on encrypted data. The precision can be reduced to 7 bits for this operation."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "The attention mask and the pad token id were not set. As a consequence, you may observe unexpected behavior. Please pass your input's `attention_mask` to obtain reliable results.\n",
      "Setting `pad_token_id` to `eos_token_id`:50256 for open-end generation.\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "'Computations on encrypted data can help protect your data from'"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "proj_12_heads_qgpt2 = MultiHeadsQGPT2Model.from_pretrained(\"gpt2_model\", n_bits=7, use_cache=False)\n",
    "proj_12_heads_qgpt2.set_fhe_mode(fhe=\"disable\")\n",
    "\n",
    "output_ids_clear = proj_12_heads_qgpt2.generate(input_ids, max_new_tokens=4)\n",
    "gpt2_tokenizer.decode(output_ids_clear[0])"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The meaning of the generated sentence is close to the original, and the compilation to FHE can now be checked.\n",
    "\n",
    "The logits for the next predicted token are generated in the clear, and then the model is compiled in the same way."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "proj_12_heads_qgpt2.set_fhe_mode(fhe=\"disable\")\n",
    "\n",
    "output_logits_clear = proj_12_heads_qgpt2(input_ids).logits"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Circuit compiled with at most 15 bits\n"
     ]
    }
   ],
   "source": [
    "circuit_12_heads = proj_12_heads_qgpt2.compile(input_ids, msbs_round=6)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In this case, the circuit reaches 15 bits of precision.\n",
    "\n",
    "The model is then executed with simulation, and it is observed that the same outputs as those computed in the clear with quantized operators are retrieved."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "proj_12_heads_qgpt2.set_fhe_mode(fhe=\"simulate\")\n",
    "\n",
    "output_logits_simulated = proj_12_heads_qgpt2(input_ids).logits"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The multi-head attention is now ready for execution in FHE."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Time taken to execute the multi-head in FHE: 862.97 seconds\n"
     ]
    }
   ],
   "source": [
    "proj_12_heads_qgpt2.set_fhe_mode(fhe=\"execute\")\n",
    "\n",
    "start = time.time()\n",
    "output_logits_fhe = proj_12_heads_qgpt2(input_ids).logits\n",
    "end = time.time()\n",
    "\n",
    "execution_time = end - start\n",
    "print(f\"Time taken to execute the multi-head in FHE: {execution_time:.2f} seconds\")"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Performance Evaluation\n",
    "\n",
    "In the following, the impact of the number of bits used for quantization on the models' performance is evaluated.\n",
    "Top-k accuracies are checked, with a few different values of k, on the predicted next logits with respect to the one computed by the initial floating point model."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model: SingleHeadQGPT2Model, n_bits: 2, Average Top-1 Accuracy: 0.7217\n",
      "Model: SingleHeadQGPT2Model, n_bits: 3, Average Top-1 Accuracy: 0.7217\n",
      "Model: SingleHeadQGPT2Model, n_bits: 4, Average Top-1 Accuracy: 0.9586\n",
      "Model: SingleHeadQGPT2Model, n_bits: 5, Average Top-1 Accuracy: 0.9561\n",
      "Model: SingleHeadQGPT2Model, n_bits: 6, Average Top-1 Accuracy: 0.9783\n",
      "Model: SingleHeadQGPT2Model, n_bits: 7, Average Top-1 Accuracy: 0.9854\n",
      "Model: SingleHeadQGPT2Model, n_bits: 8, Average Top-1 Accuracy: 0.9949\n",
      "Model: SingleHeadQGPT2Model, n_bits: 9, Average Top-1 Accuracy: 0.9981\n",
      "Model: SingleHeadQGPT2Model, n_bits: 10, Average Top-1 Accuracy: 0.9968\n",
      "Model: SingleHeadQGPT2Model, n_bits: 11, Average Top-1 Accuracy: 0.9975\n",
      "Model: SingleHeadQGPT2Model, n_bits: 2, Average Top-5 Accuracy: 0.9153\n",
      "Model: SingleHeadQGPT2Model, n_bits: 3, Average Top-5 Accuracy: 0.9153\n",
      "Model: SingleHeadQGPT2Model, n_bits: 4, Average Top-5 Accuracy: 0.9987\n",
      "Model: SingleHeadQGPT2Model, n_bits: 5, Average Top-5 Accuracy: 0.9994\n",
      "Model: SingleHeadQGPT2Model, n_bits: 6, Average Top-5 Accuracy: 1.0000\n",
      "Model: SingleHeadQGPT2Model, n_bits: 7, Average Top-5 Accuracy: 1.0000\n",
      "Model: SingleHeadQGPT2Model, n_bits: 8, Average Top-5 Accuracy: 1.0000\n",
      "Model: SingleHeadQGPT2Model, n_bits: 9, Average Top-5 Accuracy: 1.0000\n",
      "Model: SingleHeadQGPT2Model, n_bits: 10, Average Top-5 Accuracy: 1.0000\n",
      "Model: SingleHeadQGPT2Model, n_bits: 11, Average Top-5 Accuracy: 1.0000\n",
      "Model: SingleHeadQGPT2Model, n_bits: 2, Average Top-10 Accuracy: 0.9484\n",
      "Model: SingleHeadQGPT2Model, n_bits: 3, Average Top-10 Accuracy: 0.9484\n",
      "Model: SingleHeadQGPT2Model, n_bits: 4, Average Top-10 Accuracy: 0.9994\n",
      "Model: SingleHeadQGPT2Model, n_bits: 5, Average Top-10 Accuracy: 0.9994\n",
      "Model: SingleHeadQGPT2Model, n_bits: 6, Average Top-10 Accuracy: 1.0000\n",
      "Model: SingleHeadQGPT2Model, n_bits: 7, Average Top-10 Accuracy: 1.0000\n",
      "Model: SingleHeadQGPT2Model, n_bits: 8, Average Top-10 Accuracy: 1.0000\n",
      "Model: SingleHeadQGPT2Model, n_bits: 9, Average Top-10 Accuracy: 1.0000\n",
      "Model: SingleHeadQGPT2Model, n_bits: 10, Average Top-10 Accuracy: 1.0000\n",
      "Model: SingleHeadQGPT2Model, n_bits: 11, Average Top-10 Accuracy: 1.0000\n",
      "Model: MultiHeadsQGPT2Model, n_bits: 2, Average Top-1 Accuracy: 0.5051\n",
      "Model: MultiHeadsQGPT2Model, n_bits: 3, Average Top-1 Accuracy: 0.3299\n",
      "Model: MultiHeadsQGPT2Model, n_bits: 4, Average Top-1 Accuracy: 0.3446\n",
      "Model: MultiHeadsQGPT2Model, n_bits: 5, Average Top-1 Accuracy: 0.6299\n",
      "Model: MultiHeadsQGPT2Model, n_bits: 6, Average Top-1 Accuracy: 0.5554\n",
      "Model: MultiHeadsQGPT2Model, n_bits: 7, Average Top-1 Accuracy: 0.8083\n",
      "Model: MultiHeadsQGPT2Model, n_bits: 8, Average Top-1 Accuracy: 0.9293\n",
      "Model: MultiHeadsQGPT2Model, n_bits: 9, Average Top-1 Accuracy: 0.9611\n",
      "Model: MultiHeadsQGPT2Model, n_bits: 10, Average Top-1 Accuracy: 0.9809\n",
      "Model: MultiHeadsQGPT2Model, n_bits: 11, Average Top-1 Accuracy: 0.9898\n",
      "Model: MultiHeadsQGPT2Model, n_bits: 2, Average Top-5 Accuracy: 0.8102\n",
      "Model: MultiHeadsQGPT2Model, n_bits: 3, Average Top-5 Accuracy: 0.6662\n",
      "Model: MultiHeadsQGPT2Model, n_bits: 4, Average Top-5 Accuracy: 0.6025\n",
      "Model: MultiHeadsQGPT2Model, n_bits: 5, Average Top-5 Accuracy: 0.8446\n",
      "Model: MultiHeadsQGPT2Model, n_bits: 6, Average Top-5 Accuracy: 0.7732\n",
      "Model: MultiHeadsQGPT2Model, n_bits: 7, Average Top-5 Accuracy: 0.9815\n",
      "Model: MultiHeadsQGPT2Model, n_bits: 8, Average Top-5 Accuracy: 0.9994\n",
      "Model: MultiHeadsQGPT2Model, n_bits: 9, Average Top-5 Accuracy: 1.0000\n",
      "Model: MultiHeadsQGPT2Model, n_bits: 10, Average Top-5 Accuracy: 1.0000\n",
      "Model: MultiHeadsQGPT2Model, n_bits: 11, Average Top-5 Accuracy: 1.0000\n",
      "Model: MultiHeadsQGPT2Model, n_bits: 2, Average Top-10 Accuracy: 0.8739\n",
      "Model: MultiHeadsQGPT2Model, n_bits: 3, Average Top-10 Accuracy: 0.7497\n",
      "Model: MultiHeadsQGPT2Model, n_bits: 4, Average Top-10 Accuracy: 0.6720\n",
      "Model: MultiHeadsQGPT2Model, n_bits: 5, Average Top-10 Accuracy: 0.8904\n",
      "Model: MultiHeadsQGPT2Model, n_bits: 6, Average Top-10 Accuracy: 0.8268\n",
      "Model: MultiHeadsQGPT2Model, n_bits: 7, Average Top-10 Accuracy: 0.9930\n",
      "Model: MultiHeadsQGPT2Model, n_bits: 8, Average Top-10 Accuracy: 1.0000\n",
      "Model: MultiHeadsQGPT2Model, n_bits: 9, Average Top-10 Accuracy: 1.0000\n",
      "Model: MultiHeadsQGPT2Model, n_bits: 10, Average Top-10 Accuracy: 1.0000\n",
      "Model: MultiHeadsQGPT2Model, n_bits: 11, Average Top-10 Accuracy: 1.0000\n"
     ]
    },
    {
     "data": {
      "image/png": "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5+cnqFQqdfu0adMEiUQiPHnyRBAEQUhMTBSkUqkwcOBAjfE+/fRTAYDGmC+ellKpVIKbm5sQEBCgsY3s7GzBxcVF6NWrV7F6SnsUPS0VFxcnSCQS4YsvvtCo6/Lly4JUKtVoz87OLva5hYWFCSKRSLh79666zcvLS2jQoIH6vRd+vgA0TksNHDhQAKD1VGCh3bt3CwCEr776ShAEQRg0aJAAQGNsQRCEp0+fCikpKepH0TELTw2FhoYKKSkpQmJiohAVFSW0adNGAKD19FZpp6VK4ufnJ9jY2Gjd9pdffilcuXJFACD88ccfgiAIwtq1awVra2shKytLGDNmjMZpqeTkZMHMzEzw9/cXlEqlun3NmjUCAGHTpk2CIAhCbm6uYGtrK3h5eQk5OTnqft9++60AQOO01H/+8x9BLBart19o/fr1AgCNU208LUWGxiM3RHrQq1cvnDp1CgMGDMClS5ewZMkSBAQEwNHREXv37n3p+u+9957GJNI33ngDSqUSd+/eBQBERkYiLy8P//d//6exXuFE5dJER0fj5s2bGDlyJB49eqQ+CpOVlYWePXvi2LFjUKlUGuusXbsWERERxR6tWrXS6Ld7926oVCoMHTpU4wiPvb093NzccOTIEXVfCwsL9fOsrCw8fPgQnTp1giAIuHjxIgAgISEB0dHRGDNmDGrWrKnu36tXL3h4eGhsOyMjAwBQo0aNEt974bLCvunp6QBQ7Mqi9evXo379+upH586di40VEhKC+vXrw97eHt26dcPt27exePHiEk9v6WLhwoX47bffsGjRIq2nNgHA09MTrVq1wvbt2wEA27Ztw7/+9S9YWloW6/vbb78hNzcXU6dO1ZhMPWHCBNjY2GD//v0AgD///BPJycn44IMPYGZmpu43duxYjc8fyD/y5u7ujubNm2vs68LTc0X3NZGh8WopIj15/fXXsXv3buTm5uLSpUv45ZdfsGLFCrz11luIjo4u9su5qEaNGmm8rl27NgAgNTUVANQhp2nTphr96tSpo+5bkps3bwIAxowZU2KftLQ0jXHat28Pb2/vYv1q166Nhw8faowtCALc3Ny0jiuTydTP4+PjMX/+fOzdu1f9vopuH3j+PrWN16xZM1y4cEH9umhwKSkQFIaawnlPhetkZmZq/PIePHiw+hL36dOna1wKXui9997DkCFDIBaLUatW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jDqJiIiIykTnIzfBwcEYO3Ysbt68CXNzc3V7YGAgjh07ptfiiIiIiHSlc7g5d+4c3n///WLtjo6OSExM1EtRREREROWlc7iRy+VIT08v1n7jxg3Ur19fL0URERERlZfO4WbAgAH47LPPoFAoAAAikQjx8fGYPXs2Bg8erPcCiYiIiHShc7hZtmwZMjMzYWtri6dPn6Jr165o2rQpatSogS+++KIyaiQiIiIqM52vlqpZsyYiIiJw/Phx/PXXX8jMzETbtm3h5+dXGfURERER6aTcX5zZuXNndO7cWZ+1EBEREVWYzuHmq6++0touEolgbm6Opk2bokuXLpBIJBUujoiIiEhXOoebFStWICUlBdnZ2ahduzYAIDU1FZaWlrC2tkZycjKaNGmCI0eOwMnJSe8FExEREZVG5wnFCxcuxOuvv46bN2/i0aNHePToEW7cuIEOHTpg1apViI+Ph729PaZNm1YZ9RIRERGVSucjN5988gl27doFV1dXdVvTpk2xdOlSDB48GHfu3MGSJUt4WTgREREZhM5HbhISEpCXl1esPS8vT32HYgcHB2RkZFS8OiIiIiId6Rxuunfvjvfffx8XL15Ut128eBETJ05Ejx49AACXL1+Gi4uL/qokIiIiKiOdw83GjRtRp04dtGvXDnK5HHK5HN7e3qhTpw42btwIALC2tsayZcv0XiwRERHRy+g858be3h4RERG4du0abty4AQBo1qwZmjVrpu7TvXt3/VVIREREpINy38SvefPmaN68uT5rISIiIqqwcoWbf/75B3v37kV8fDxyc3M1li1fvlwvhRERERGVh87hJjIyEgMGDECTJk1w7do1tGjRAnFxcRAEAW3btq2MGomIiIjKTOcJxXPnzsWMGTNw+fJlmJubY9euXbh37x66du2KIUOGVEaNRERERGWmc7iJiYnB6NGjAQBSqRRPnz6FtbU1PvvsMyxevFjvBRIRERHpQudwY2VlpZ5n06BBA9y+fVu97OHDh/qrjIiIiKgcdJ5z07FjRxw/fhzu7u4IDAzE9OnTcfnyZezevRsdO3asjBqJiIiIykzncLN8+XJkZmYCAEJDQ5GZmYmdO3fCzc2NV0oRERGRwekUbpRKJf755x+0atUKQP4pqvXr11dKYURERETlodOcG4lEAn9/f6SmplZWPUREREQVovOE4hYtWuDOnTuV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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAHHCAYAAABDUnkqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAACOwElEQVR4nOzdd3hT1RvA8W9G94bSllEoo2xkyip7b0EBGQqIIiAIiALyUyggMpQ9BEVApqIyRHapDJmyKntTZgerg+4m9/dHoFBbSgtJ06bv53nycHNz7j1vctvm5dwzVIqiKAghhBBCWAi1uQMQQgghhDAmSW6EEEIIYVEkuRFCCCGERZHkRgghhBAWRZIbIYQQQlgUSW6EEEIIYVEkuRFCCCGERZHkRgghhBAWRZIbIYQQQlgUSW6EyCXGjRuHSqXKVNmffvoJlUpFcHCwaYMyEpVKxbhx48wdhnjsVX5+svJzKoSpSHIjhJE8+UJQqVTs27cvzeuKouDt7Y1KpaJdu3ZGqXPSpEls2LAhU2UbNWpExYoV030tODgYlUrFtGnTjBJXdtq0aROtWrUif/782NraUrp0aUaMGMGDBw+ee8zff/9N165dKVy4MNbW1ri4uFCrVi0mTJhAWFhYqrKNGjVKua4qlYp8+fLx+uuvs2TJEvR6Pbt37071ekYPgCNHjjB48GAqVKiAg4MDRYsWpWvXrly8eDFNnE/q9vX1Tfd9BAQEpJz7999/f4VPUQjLojV3AEJYGltbW1avXk29evVS7d+zZw+3bt3CxsbGaHVNmjSJzp0707Fjx1T73333Xbp162bUunKizz77jOnTp1O5cmVGjRpFvnz5OH78OHPnzmXNmjUEBgamSQzGjh3LV199RYkSJejTpw8lSpQgPj6eY8eOMX36dJYtW8aVK1dSHVOkSBEmT54MwN27d1m+fDnvv/8+Fy9e5JNPPmHFihWpyo8ePRpHR0e++OKLNDFPnTqV/fv306VLF1577TVCQ0OZN28e1apV49ChQ2kSUFtbWy5fvsw///xDzZo1U722atUqbG1tiY+Pf+nPUAhLJMmNEEbWpk0bfvvtN+bMmYNW+/RXbPXq1VSvXp179+6ZPAaNRoNGozF5Peb0888/M336dN5++21WrVqV6v326dOHxo0b06VLF44ePZpyHdasWcNXX31F165dWbFiBdbW1qnOOXPmTGbOnJmmLhcXF955552U5/3796dMmTLMmzePr776KtVrAFOmTMHd3T3NfoDhw4ezevXqVHW//fbbVKpUiSlTprBy5cpU5UuWLElycjI///xzquQmPj6e9evX07ZtW9auXZuZj0yIPENuSwlhZN27d+f+/fsEBASk7EtMTOT333+nR48eqco+uaWxe/fuVPuf3Cb66aefnluPSqUiJiaGZcuWpdya6NOnD2C8PjcREREMGzYMb29vbGxsKFWqFFOnTkWv16cqN23aNOrWrUv+/Pmxs7OjevXq6d4mSUhI4JNPPqFAgQI4OTnRoUMHbt26laZcdHQ0w4YNw8fHBxsbGzw8PGjevDnHjx9PKTN+/Hjc3Nz44Ycf0iRyNWvWZNSoUfz777+sW7cuZf/YsWNxd3dn8eLFaRIbMCQxmen7Y29vT+3atYmJieHu3bsvLP+sunXrpqnb19eXChUqcO7cuXSP6d69O2vWrEn1uf/555/ExsbStWvXdI85ceIErVu3xtnZGUdHR5o2bcqhQ4fSlDtz5gxNmjTBzs6OIkWKMHHixDTX94mtW7dSv359HBwccHJyom3btpw5cyazb12IbCPJjRBG5uPjQ506dfj5559T9m3dupXIyEi6detmtHpWrFiBjY0N9evXZ8WKFaxYsYL+/ftneIxOp+PevXtpHg8fPkxTNjY2loYNG7Jy5Up69erFnDlz8PPzY/To0QwfPjxV2dmzZ1O1alUmTJjApEmT0Gq1dOnShc2bN6cq98EHHzBr1ixatGjBlClTsLKyom3btmnqHjBgAAsWLOCtt97iu+++47PPPsPOzi7ly//SpUtcuHCBN954A2dn53Tfa69evQBDEgBw8eJFLl68SMeOHXF0dMzwc8qMq1evotFocHV1feVzKYpCWFgY7u7u6b7eo0cPQkJCUiXBq1evpmnTpnh4eKQpf+bMGerXr8+///7LyJEjGTNmDNeuXaNRo0YcPnw4pVxoaCiNGzcmKCiIzz//nGHDhrF8+XJmz56d5pwrVqygbdu2ODo6MnXqVMaMGcPZs2epV69erum4LvIQRQhhFEuXLlUA5ciRI8q8efMUJycnJTY2VlEURenSpYvSuHFjRVEUpVixYkrbtm0VRVGUXbt2KYCya9euVOe6du2aAihLly5N2efv76/891fWwcFB6d2793NjuXbtWsq+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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "\n",
    "\n",
    "def generate_topk_tokens(model, tokenizer, text, top_k):\n",
    "    \"\"\"Generate the top-k tokens for every token in the text.\"\"\"\n",
    "    inputs = tokenizer.encode(text, return_tensors=\"pt\")\n",
    "    topk_tokens_list = []\n",
    "    with torch.no_grad():\n",
    "        outputs = model(inputs)\n",
    "        logits = outputs.logits\n",
    "        for logit in logits[0]:\n",
    "            topk_tokens = torch.topk(\n",
    "                logit,\n",
    "                top_k,\n",
    "            ).indices.tolist()\n",
    "            topk_tokens_list.append(topk_tokens)\n",
    "    return topk_tokens_list\n",
    "\n",
    "\n",
    "def calculate_topk_accuracy(ground_truth_tokens, computed_tokens):\n",
    "    \"\"\"Calculate the top-k accuracy.\"\"\"\n",
    "    correct_count = sum([1 for gt_token in ground_truth_tokens if gt_token in computed_tokens])\n",
    "    return correct_count / len(ground_truth_tokens)\n",
    "\n",
    "\n",
    "# Define the models to evaluate\n",
    "models = {\n",
    "    \"SingleHeadQGPT2Model\": SingleHeadQGPT2Model,\n",
    "    \"MultiHeadsQGPT2Model\": MultiHeadsQGPT2Model,\n",
    "}\n",
    "\n",
    "# Define the different number of bits and k values to evaluate\n",
    "n_bits_range = list(range(2, 12))\n",
    "top_ks = [1, 5, 10]\n",
    "\n",
    "# Define the text data to use for the evaluation\n",
    "dataset_file = \"data.txt\"\n",
    "\n",
    "# Read the evaluation file\n",
    "with open(dataset_file, \"r\", encoding=\"utf-8\") as file:\n",
    "    input_texts = [line.strip() for line in file]\n",
    "\n",
    "for model_name, Model in models.items():\n",
    "    plt.figure()\n",
    "    for top_k in top_ks:\n",
    "        accuracies = []\n",
    "        for n_bits in n_bits_range:\n",
    "\n",
    "            # Load the model using the current number of bits and set it to clear quantized mode\n",
    "            model = Model.from_pretrained(\n",
    "                \"gpt2_model\",\n",
    "                n_bits=n_bits,\n",
    "            )\n",
    "            model.set_fhe_mode(fhe=\"disable\", true_float=False)\n",
    "\n",
    "            accuracy_scores = []\n",
    "            for text in input_texts:\n",
    "                # Generate the top-k tokens for the Hugging Face floating point model\n",
    "                hf_topk_tokens_list = generate_topk_tokens(gpt2_model, gpt2_tokenizer, text, 1)\n",
    "\n",
    "                # Generate the top-k tokens for the quantized model\n",
    "                clone_topk_tokens_list = generate_topk_tokens(model, gpt2_tokenizer, text, top_k)\n",
    "\n",
    "                # Compute the top-k accuracy for each token in the text\n",
    "                for hf_topk_tokens, clone_topk_tokens in zip(\n",
    "                    hf_topk_tokens_list, clone_topk_tokens_list\n",
    "                ):\n",
    "                    topk_accuracy = calculate_topk_accuracy(hf_topk_tokens, clone_topk_tokens)\n",
    "                    accuracy_scores.append(topk_accuracy)\n",
    "\n",
    "            # Compute the average accuracy within the text\n",
    "            average_accuracy = sum(accuracy_scores) / len(accuracy_scores)\n",
    "            accuracies.append(average_accuracy)\n",
    "\n",
    "            # Print the average accuracy for this model, n_bits, and top_k\n",
    "            print(\n",
    "                f\"Model: {model_name}, \"\n",
    "                f\"n_bits: {n_bits}, \"\n",
    "                f\"Average Top-{top_k} Accuracy: {average_accuracy:.4f}\"\n",
    "            )\n",
    "\n",
    "        plt.plot(n_bits_range, accuracies, label=f\"Top-{top_k}\")\n",
    "\n",
    "    # Plot the model's evaluation\n",
    "    plt.title(f\"{model_name}\")\n",
    "    plt.xlabel(\"n_bits\")\n",
    "    plt.ylabel(\"Average Accuracy\")\n",
    "    plt.legend()\n",
    "    plt.grid(True)\n",
    "    plt.ylim(0, 1.05)\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The results show that for the first model, where only a single head is done with FHE-compliant operators, 4 bits are enough to recover 95% of Hugging Face's performance in terms of top-1 accuracy.\n",
    "For the second model, which implements a complete multi-head attention with quantized operators, 7 bits gives a 80% exact predictions while the top-5 and top-10 accuracies reach 98%."
   ]
  }
 ],
 "metadata": {
  "execution": {
   "timeout": 10800
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
